/* ajax({
    method:'get',
    url:'/abc.do',
    success:function(data){
        console.log(data); // 成功要做的事
    },
    async:true, // 异步
    error:function(err){
        console.log(err); // 失败要做的事
    }
}) */

function ajax(json){
    //调用是否传递了json参数，如果没有传递参数就赋值为空对象
    json = json || {};

    //判断向服务器发起请求的地址是否存在，如果没有就结束
    if(!json.url){
        return;
    }

    //判断请求类型是否确定，如果没有就默认发get请求
    json.type = json.type || 'get';

    //是否有指定同步|异步，如果没有指定就默认异步
    json.async = json.async || true;

    let xhr = new XMLHttpRequest() || new ActiveXObject('Microsoft.XMLHTTP');

    switch(json.type.toLowerCase()){ // 避免大小写不统一，统一转换为小写
        case 'get':
            xhr.open('get',json.url+'?'+toJson(json.data),json.async);
            xhr.send();
            break;
        case 'post':
            xhr.open('post',json.url,json.async);
            xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            xhr.send(toJson(json.data));
            break;
    }

    //回调函数
    xhr.onreadystatechange=function(){
        if(xhr.readyState == 4){
            if(xhr.status >= 200 && xhr.status <= 300 || xhr.status == 304){
                json.success && json.success(xhr.responseText);
            }else{
                json.error && json.error(xhr.status);
            }
        }
    }
}

//转换json为username=admin&pwd=123
function toJson(json){
    let arr=[];
    for(let key in json){
        arr.push(key+'='+json[key]);
    }
    return arr.join('&');
}